home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 13316 / 13316.xpi / content / openPageDialog.js < prev    next >
Text File  |  2009-10-01  |  8KB  |  221 lines

  1.  
  2. /* Copyright (C) 2009 Norman Solomon
  3.  * e-mail: historytree.addon@yahoo.com
  4.  * 
  5.  * The contents of this file are subject to the Mozilla Public License Version
  6.  * 1.1 (the "License"); you may not use this file except in compliance with
  7.  * the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the License.
  12.  */
  13.  
  14. // *************************************************************************
  15. // *****                                                               *****
  16. // *****          MODAL DIALOG OPENED FROM "historyViewer.js"          *****
  17. // *****   --------------------------------------------------------    *****
  18. // *****   Goes to or opens TV or GV page that user clicks on via a    *****
  19. // *****   chain of "historyViewer.js" > "firefoxOverlay.js" methods   *****
  20. // *****                                                               *****
  21. // *************************************************************************
  22.  
  23. // Global used by this window
  24. var gOKbtnClick = false;
  25.  
  26. // ========================================================
  27. // Window onLoad event listener, and associated function
  28. // ========================================================
  29. window.addEventListener("load", onLoad, false);
  30. function onLoad() 
  31. {
  32.     try
  33.     {
  34.         // Get references to this window's GUI controls
  35.         var menuSelTab = document.getElementById("menuSelTab");
  36.         var optGrpOpen = document.getElementById("optGrpOpen");
  37.         var optCurrTab = document.getElementById("optCurrTab");
  38.         var optSelTab = document.getElementById("optSelTab");
  39.         var optGoto = document.getElementById("optGoto");
  40.         var lblPageDesc = document.getElementById("lblPageDesc");
  41.         var lblPageURL = document.getElementById("lblPageURL");
  42.         
  43.         // Init other vars
  44.         var parentWin = window.opener;    // "historyViewer.xul"
  45.         var tNode;                        // HistoryNode
  46.         var truncDesc, truncURL;        // Strings
  47.  
  48.         // Get data that was put into App Storage by this window's opener
  49.         tNode = Application.storage.get("openPageTreeNode", null);
  50.  
  51.         // --------------------------------------------------------------
  52.         // Show centralised, truncated web-page description in <label...>
  53.         parentWin.gCtx.mozTextStyle = "bold 7pt verdana";
  54.         truncDesc = parentWin.truncatedText(tNode.histNode.desc, 200);
  55.         lblPageDesc.value = truncDesc;
  56.  
  57.         // Show centralised, truncated web-page URL in <label...>
  58.         parentWin.gCtx.mozTextStyle = "7pt verdana";
  59.         truncURL = parentWin.truncatedText(tNode.histNode.uri, 200);
  60.         lblPageURL.value = truncURL;
  61.  
  62.         // Initialize GUI depending on type of page user clicked on
  63.         if (parentWin.numExtWinOpenTabs() > 0)
  64.         {
  65.             // Fill <menulist...> with Tab root page descriptions
  66.             fillMenulistWithTabRootDescriptions();
  67.  
  68.             // Set default <radio...> option
  69.             if (tNode.isOpenPage)
  70.             {
  71.                 // Default option is "Go to history page"
  72.                 optGrpOpen.selectedIndex = 0;
  73.             }
  74.             else
  75.             {
  76.                 // Default option is "Open page in current Tab"
  77.                 optGrpOpen.selectedIndex = 1;
  78.  
  79.                 // Disable "Goto page" option (can't goto closed page)
  80.                 optGoto.disabled = true;
  81.             }
  82.         }
  83.         else
  84.         {
  85.             // Only possible option is "Open page in a new tab"
  86.             optGrpOpen.selectedIndex = 2;
  87.  
  88.             // Disable other <radio...>'s and <menulist...>
  89.             optGoto.disabled = true;
  90.             optCurrTab.disabled = true;
  91.             optSelTab.disabled = true;
  92.             menuSelTab.disabled = true;
  93.         }
  94.     }
  95.     catch (e)
  96.     {
  97.         alert("History Tree Extension - Modal window load error");
  98.     }
  99. }
  100.  
  101. // ============================================================
  102. // Extension window onFocus listener and associated function
  103. // ============================================================
  104. window.addEventListener("focus", onFocus, false);
  105. function onFocus()
  106. {
  107.     // Get window size - As automatically set by the XUL renderer
  108.     var winHgt = this.outerHeight + 15;
  109.     var winWid = this.outerWidth;
  110.     if (winWid < 265)
  111.         winWid = 265;
  112.  
  113.     // Make sure window has a border round the edges
  114.     this.resizeTo(winWid, winHgt);
  115. }
  116.  
  117. // ================================================================
  118. // Called from "openPageDialog.xul" <button "btnOK"...> onclick()
  119. // ================================================================
  120. function okButtonEventHandler(event)
  121. {
  122.     // Close this window and Goto/open history page
  123.     gOKbtnClick = true;
  124.     this.close();
  125. }
  126.  
  127. // ====================================================================
  128. // Called from "openPageDialog.xul" <button "btnCancel"...> onclick()
  129. // ====================================================================
  130. function cancelButtonEventHandler(event)
  131. {
  132.     // Close this window but DO NOT goto/open history page
  133.     gOKbtnClick = false;
  134.     this.close();
  135. }
  136.  
  137. // ======================================================
  138. // Called when this window is closed via JS this.close()
  139. // ======================================================
  140. window.addEventListener("unload", onUnload, false);
  141. function onUnload()
  142. {
  143.     // Goto/open page if user clicked on the "OK" button
  144.     if (gOKbtnClick)
  145.     {
  146.         // Get this window's GUI control attributes
  147.         var parentWin = window.opener;    // "historyViewer.xul"
  148.         var optGrpOpen = document.getElementById("optGrpOpen");
  149.         var optNum = optGrpOpen.selectedIndex;
  150.         var menuSelTab = document.getElementById("menuSelTab");
  151.         var selTabID;
  152.  
  153.         // Get selected <menulist...> row if its available *** NOTE
  154.         // selTabID is ONLY used for "Open page in tab selected" option
  155.         if (!menuSelTab.disabled)
  156.             selTabID = menuSelTab.selectedItem.value;
  157.         else
  158.             selTabID = "";
  159.  
  160.         // Call "historyViewer.js" method, passing in user's GUI options
  161.         // *** NOTE - This method immediately switches focus to FF win
  162.         parentWin.showHistoryPageInFirefox(optNum, selTabID);
  163.     }
  164. }
  165.  
  166. // ========================================================
  167. // Window onBlur (lost focus) event listener, and function
  168. // ========================================================
  169. window.addEventListener("blur", onLostFocus, false);
  170. function onLostFocus() 
  171. {
  172.     // Set flag that causes exit from parent window's onFocus()
  173.     window.opener.gExitWinFocusEvent = true;
  174.     window.opener.focus();
  175.  
  176.     // close() ensures that parentWin onFocus() updates occur
  177.     this.close();
  178. }
  179.  
  180. // ====================================================
  181. // Fills <menulist...> with Tab root page descriptions
  182. // ====================================================
  183. function fillMenulistWithTabRootDescriptions()
  184. {
  185.     // Init vars
  186.     var parentWin = window.opener;
  187.     var menuSelTab = document.getElementById("menuSelTab");
  188.     var menuItem;    
  189.     var listItemTxt;
  190.     var tabRoot;
  191.  
  192.     // --------------------------------------------------
  193.     // Fill the <menulist...> with Tab root descriptions
  194.     for (var i = 0; i < parentWin.gTabRoots.length; i++)
  195.     {
  196.         // Get Tab root TreeNode object
  197.         tabRoot = parentWin.gTabRoots[i];
  198.         
  199.         // Add <menulist...> menuitem if Tab is open
  200.         if (tabRoot.inOpenTab)
  201.         {
  202.             // Set <menulist...> item prefix
  203.             listItemTxt = (i + 1).toString() + " - ";
  204.                 
  205.             // Add web-page description from Tab root HistoryNode
  206.             listItemTxt += tabRoot.histNode.desc;
  207.  
  208.             // Add menuitem to <menulist...> including tabID as item.value
  209.             menuSelTab.appendItem(listItemTxt, tabRoot.histNode.tab);
  210.  
  211.             // Set style attributes for added menuItem
  212.             menuItem = menuSelTab.getItemAtIndex(i);
  213.             menuItem.style.fontFamily = "Verdana";
  214.             menuItem.style.fontSize = "7pt";
  215.             menuItem.style.fontWeight = "bold";
  216.         }
  217.     }
  218.  
  219.     // Select the first <menulist...> row
  220.     menuSelTab.selectedIndex = 0;
  221. }